package org.jiuling.wechat.publicplatform.verify;

import org.jiuling.local.tools.convert.ByteConvert;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

/**
 * 微信校验
 * @author 紫灵
 * @date 2022年04月25日 21时19分14秒
 */
public class WeChatVerify {

    public static boolean checkSignature(String token,String signature, String timestamp, String nonce){
//        ByteConvert
        String checktext = null;
        if (null != signature) {
            // 对ToKen,timestamp,nonce 按字典排序
            String[] paramArr = new String[] { token, timestamp, nonce };
            Arrays.sort(paramArr);
            // 将排序后的结果拼成一个字符串
            String content = paramArr[0].concat(paramArr[1]).concat(paramArr[2]);
            try {
                MessageDigest md = MessageDigest.getInstance("SHA-1");
                // 对接后的字符串进行sha1加密
                byte[] digest = md.digest(content.toString().getBytes());
                checktext = ByteConvert.byteArrayToHexString(digest);
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }
        // 将加密后的字符串与signature进行对比
        return checktext != null ? checktext.equals(signature) : false;
    }

}
